Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2023-NIPS-Active Negative Loss Functions for Learning with Noisy Labels

https://nips.cc/virtual/2023/poster/71501

Introduction

先行研究はこちら

📄Arrow icon of a page link2017-AAAIAI-Robust Loss Functions under Label Noise for Deep Neural Networks.

📄Arrow icon of a page link2020-ICML-[APL]Normalized Loss Functions for Deep Learning with Noisy Labels

クラスkkに対して、与えられる正解の分布はq(k∣x)q(k|x)であり、識別器の予測分布はf(x)→p(k∣x)f(x) \to p(k|x)である。

いろんな損失関数をNoisy Labelの場合で試して検証してみた。

Image in a image block

また、損失関数を以下のようにNormalizeするとNoisy Labelに強くなる。すべてのクラスについての損失の和が1になるように正規化する。

理由としては、不明。極端な値をとる場合はほかの項も極端な値をとっているので、結果的に釣り合う?

Lnorm=L(f(x),y)∑kKL(f(x),y)L_{norm} = \frac{L(f(\mathbf{x}), y)}{\sum_{k}^K L(f(\mathbf{x}), y)}

ただ、これではUnderfittingの問題があるという。例えば、

損失関数の2種類

損失関数にはActiveとPassiveがある。

  • Active Pr(y∣x)Pr(y|\mathbf{x})(所属するクラスの確率)を最大化する。
    • 例えば、Cross Entropy、Focal Loss、Normalized CE/FL
    • 具体的に言うと、正解クラスyy以外のクラスkkが正解だったら、と擬して損失を考えないつまりl(f(x),k)=0l(f(x),k)=0。
      • 実際Cross Entropy損失では以下のようになる。ラベルはone-hotならば、q(y∣x)=1,q(k∣x)=0q(y|x)=1, q(k|x)=0であるので、以下のようになる。
      l(f(x),k)=−q(k∣x)log⁡p(k∣x)L(f(x),y)=−∑k=1Kl(f(x),k)∀k,k≠y,q(k∣x)=0l(f(x),k)= -q(k|x) \log p(k|x) \\ L(f(x),y)=- \sum_{k=1}^K l(f(x),k) \\ \forall k, k \neq y, q(k|x)=0
  • Passive Pr(k≠y∣x)Pr(k \neq y | \mathbf{x})をすべてのkkについて最小化する。
    • 例えば、MAE, Reverse Cross Entropy, Normalized MAE/RCE
    • 具体的に言うと、正解クラスyy以外のクラスkkについても、と擬して損失を考えるつまりl(f(x),k)≠0l(f(x),k)\neq0。
      • MAEは以下のようになる。
      l(f(x),k)=∣p(k∣x)−q(k∣x)∣2∃k,k≠y,∣p(k∣x)−q(k∣x)∣≠0l(f(x),k) = |p(k|x) - q(k|x)|^2 \\ \exist k, k \neq y, |p(k|x) - q(k|x)| \neq 0

Active Passive Loss(APL)

先行研究で提案したように、Active LossとPassive Lossを組み合わせたもの。これにより、Underfittingが抑制されるらしい。謎…?

LAPL=αLactive+βLpassiveL_{APL} = \alpha L_{active} + \beta L_{passive}

Passive Loss実はすべてMAEと同族

MAE, RCE, NMAE, NRCEの4種類があるが、RCEも以下のように、与えられるのはHard Label出ることから、MAEになる。

Image in a image block

なので、新しいPassive Loss Functionの開発を考えたい。

提案手法 Active Negative Loss Function

Method

既存の手法では達成できないようなMinimizingができる、Passive Lossである、Noisy Labelに強いの3要件を兼ね備えたものにしたい。それぞれ

  • 達成できないような最小化=Complementary Label Learning
    • 正解のラベル以外が与えられる感じ。
  • Passive Loss=垂直フリップ
    • 単純に以下のようにある定数AAを使って、最適化を最大化から最小化にしていること。
    Image in a image block
    • Passive Lossの具体例として、Hard Labelに対するCross Entropy LossはLCE(f(x),y)=−log⁡p(y∣x)L_{CE}(f(x),y)=-\log p(y|x)である。これに対して、A−LCE(f(x),y)=A+log⁡p(y∣x)A - L_{CE}(f(x),y)=A + \log p(y|x)を考える。
      • p(y∣x)p(y|x)が大きくなると、元の損失関数は小さくなるが、符号をひっくり返したVertical Flippedした損失は大きくなる。
      • 損失関数を最小化したい、という大枠の目的は変わらないので、「もともとの損失でのp(y∣x)p(y|x)の最大化」を「Flipした損失でのp(y∣x)p(y|x)の最小化」にすることができる。これ自体がPassive Lossの非該当クラスの要件を満たす。
  • Noisy Labelに強い=正規化 これは 📄Arrow icon of a page link2020-ICML-[APL]Normalized Loss Functions for Deep Learning with Noisy Labels にあるように。

で実現している。

これらを踏まえてまず、Negative Loss Functionを提案する。

Vertical Flipを使うことで、任意のPositiveの関数を∀k,k≠y,p(k∣x)\forall k, k \neq y, p(k|x)の最小化の目的関数にできるので、できるだけクラスkkに合致しないようにするためA−L(f(x),k)A - L(f(\mathbf{x}),k)を最小化するNegative Loss Functionを考える。

各クラスkkについては、より与えられたラベルの中であり得ないようなクラスほど(つまり1−q(k∣x)1-q(k|\mathbf{x})が重み)、合致しないようにするNegative Loss Functionの項を重くする。これによって、あり得ない度が高いほど、うまくA−L(f(x),k)A-L(f(\mathbf{x}),k)を最小化していくインセンティブが生まれる。

Image in a image block

この時、log⁡0=∞\log 0=\inftyになるみたいなことが起きるので、最も低い予測確率でも1×10−71 \times 10^{-7}としている。うまいこと上限をcaptionする必要がある!

あとはこれを正規化すればよい。クロスエントロピー損失である場合の実例も示す。

Image in a image block

Active Negative Lossへの組み合わせ

これもActive Passive Lossに倣い、Active Negative Lossというのを考える。Negativeは補ラベルを使って考えたから。

Image in a image block

前は正規化されたActive Loss。後ろは正規化されたNegative Loss(補ラベルベースの)。

このように考えた正規化されたNegative Lossも、対称である。以下の証明では、全クラスに対しての損失の和を加算したっけか定数となるので、これは対称的な損失であると示せた。

Image in a image block

そして対称的な損失は、Noisy Labelに強い。

微分した際の勾配

デフォルトの唯一のPassive LossだったMAEでは、微分した際は以下のようになる。

Image in a image block

正規化されたNegative Lossの一例である、Cross Entropy LossのGradientは以下のようになる。

Image in a image block

定数であったMAEと違い、こちらでは

  1. a≠b≠y,p(a∣x)<p(b∣x)⇒a\neq b \neq y, p(a|x) < p(b|x) \Rightarrowaa時点の勾配はbb時点の勾配より大きい。
    1. 正解から遠い=確率が低いほど、Gradientが大きくなる。
  2. 同じクラスyyに属する2つのサンプルx1,x2x_1, x_2に対して、ある別のクラスjjについてはp(j∣x1)=p(j∣x2)p(j|x_1)=p(j|x_2)であり、それ以外では
    1. p(y∣x1)>p(y∣x2)p(y|x_1) > p(y|x_2)。つまり、x1x_1のほうが確信度が高い。
    2. p(k∣x1)<p(k∣x2)p(k|x_1)<p(k|x_2)。つまり、正解のyyや等しいjj以外ではやはりx1x_1のほうが誤った判断をしていない。

    これらの条件を満たすとき、x1x_1のGradientはx2x_2より大きい。

    他と比べて正解に近く、所属してはいけないクラスの確率自体も低いほどGradientが大きくなり、正直うれしくないかも。

実験や結果

Loss Function Correctionだけなのに、Small Loss Trickなどと比べて高いノイズ率でもちゃんと学習できている。普通はLoss Function Correctionは高いノイズ率には無力なので、これは非常にびっくり。

過学習については、正規化したNegative Loss Functionが原因で、非常に少数のCleanなサンプルだけで学習をするモデルの場合、非常に大きい勾配が生じてその結果過学習するという考察。

過学習の軽減にはL1正則化が有効。L2やヤコビアンの正則化は不適当である。